package com.pay.common.enums;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 2018年6月14日
 * 富友银行编码维护
 * yinhuachang
 */
public enum BankNoEnum {
    ZGGS("0102","中国工商银行"),
    ZGNY("0103","中国农业银行"),
    ZG("0104","中国银行"),
    ZHJS("0105","中国建设银行"),
    JT("0301","交通银行"),
    ZS("0308","招商银行"),
    XY("0309","兴业银行"),
    ZGMS("0305","中国民生银行"),
    GDFZ("0306","广东发展银行"),
    PAYH("0307","平安银行股份有限公司"),
    SHPD("0310","上海浦东发展银行"),
    HX("0304","华夏银行"),
    BJ("0313","北京银行"),
    SH("0313","上海银行"),
    QTCSSY("0313","其他城市商业银行"),// 北京银行 上海银行 都属于其他银行
    QTNCSY("0314","其他农村商业银行"),
    HF("0315"," 恒丰银行"),
    ZGYZ("0403","中国邮政储蓄银行股份有限公司"),
    ZGGD("0303","中国光大银行"),
    ZX("0302","中信银行"),
    ZSYH("0316","浙商银行股份有限公司"),
    BH("0318","渤海银行股份有限公司"),
    HS("0319","徽商银行"),
    CZ("0320","村镇银行"),
    SHNCSY("0322","上海农村商业银行"),
    QTNCXYS("0402","其他农村信用合作社");

    public final String bankNo;
    public final String bankName;

    BankNoEnum(String bankNo, String bankName) {
        this.bankNo = bankNo;
        this.bankName = bankName;
    }

    /**
     * 判断银行编号是否有效
     * @param bankNo
     * @return
     */
    public static boolean isExistBankNo(String bankNo){
        if (StringUtils.isBlank(bankNo)) {
            return false;
        }
        for (BankNoEnum em : values()) {
            if (bankNo.equals(em.bankNo)) {
                 return true;
            }
        }
        return false;
    }

    /**
     * 通过编码可以获取对应的名称
     *
     * @param
     * @return
     */
    public static String getValueByKey(String bankNo) {
        if (StringUtils.isBlank(bankNo)) {
            return null;
        }
        String tName = null;
        for (BankNoEnum em : values()) {
            if (bankNo.equals(em.bankNo)) {
                tName = em.bankName;
                break;
            }
        }
        return tName;
    }

    public static List<Map<String, String>> getWhole() {
        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        for (BankNoEnum em : values()) {
            Map<String, String> map = new HashMap<String, String>();
            map.put(em.bankNo, em.bankName);
            list.add(map);
        }
        return list;
    }
}
